package priv.demos.demo1.anno.service;

import com.payment.lc.pcs.common.enums.BizType;
import com.payment.lc.pcs.common.enums.DisplayType;
import com.payment.lc.pcs.common.enums.GroupType;
import com.payment.lc.pcs.common.enums.MiProductCategory;
import com.payment.lc.pcs.service.domain.*;
import com.payment.lc.pcs.service.util.ProductionItem;
import priv.demos.demo1.anno.annos.Clean;
import priv.demos.demo1.anno.annos.Param;

import javax.jws.WebService;
import java.util.List;

@WebService
@Clean
public interface ProductionService {

    @Deprecated
    ListWrapper<String> getProductionCodeList();

    @Deprecated
    ListWrapper<String> getDisplayUpProductionCodeList();

    @Deprecated
    ListWrapper<Production> getProductions();

    @Deprecated
    ListWrapper<Production> getDisplayUpProductions();

    @Clean
    Production getProduction(@Param("abc") String productionCode);

    ProductionV2 getProductionV2(String productionCode);

    @Deprecated
    ListWrapper<Production> getDisplayUpProductionsByCategory(List<MiProductCategory> categories);

    @Deprecated
    ListWrapper<Production> getProductionsByCategoryDisplayType(List<MiProductCategory> categories, List<DisplayType> displayTypes);

    FundsProduction getFunds(String productionCode);

    FundsProductionV2 getFundsV2(String productionCode);

    @Deprecated
    InsuranceProduction getInsurance(String productionCode);

    InsuranceProductionV2 getInsuranceV2(String productionCode);

    YueGuJiaoProduction getYueGuJiao(String productionCode);

    ListWrapper<ProductionBizInfo> getBizs(String productionCode);

    ProductionBizInfo getBiz(String productionCode, BizType bizType);

    @Deprecated
    ListWrapper<ProductionFee> getFee(String productionCode, BizType bizType);

    ListWrapper<ProductionFeeV2> getFeeV2(String productionCode, BizType bizType);

    ListWrapper<ProductionLimit> getLimit(String productionCode, BizType bizType);

    ListWrapper<PaymentChannel> getBankList(String productionCode, BizType bizType);

    ListWrapper<ProductionAgreementInfo> getAgreement(String productionCode);

    @Deprecated
    ListWrapper<ProductionItem> getAllOrderedCategoryAndProductions(GroupType groupType);

    @Deprecated
    ListWrapper<ProductionItem> getDisplayUpOrderedCategoryAndProductions(GroupType groupType);

    @Deprecated
    ListWrapper<Production> getDisplayUpOrderedProductions(GroupType groupType, String displayType);

    @Deprecated
    ListWrapper<Production> getDisplayDownOrderedProductions(GroupType groupType, String displayType);

    @Deprecated
    ListWrapper<Production> getProductionsStatusInsensitive(GroupType groupType, String displayType);

    ListWrapper<PaymentChannel> getPaymentLimit(String productionCode);

    ListWrapper<ProductionDynamicInfo> getDynamicInfoList(String productionCode);

    Provider1 getProvider(String productionCode);

    String getFundProdCode(String fundCode, String fcmFundInChannel);

    ListWrapper<ProviderChannel> getProviderChannelsByProviderCode(String providerCode);
}
